/**
 * 主应用初始化文件
 * 负责协调各个模块的初始化和交互
 */

class App {
    constructor() {
        this.managers = {};
        this.init();
    }

    init() {
        // 等待DOM完全加载
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', () => this.initializeApp());
        } else {
            this.initializeApp();
        }
    }

    initializeApp() {
        console.log('🚀 初始化视界智检系统...');
        
        // 按依赖顺序初始化管理器
        this.initializeManagers();
        
        // 设置全局引用
        this.setupGlobalReferences();
        
        console.log('✅ 系统初始化完成');
        console.log('📊 模块架构:');
        console.log('   ├── 日志管理: LogManager');
        console.log('   ├── 系统管理: SystemManager');
        console.log('   ├── 检测管理: DetectionManager');
        console.log('   ├── 统计管理: StatisticsManager');
        console.log('   ├── 语音管理: VoiceManager');
        console.log('   ├── 配置管理: ConfigManager');
        console.log('   └── Socket管理: SocketManager');
    }

    initializeManagers() {
        // 1. 首先初始化日志管理器
        this.managers.logManager = new LogManager();
        window.logManager = this.managers.logManager;

        // 2. 初始化WebSocket管理器
        this.managers.socketManager = new SocketManager();
        window.socketManager = this.managers.socketManager;

        // 3. 初始化系统管理器
        this.managers.systemManager = new SystemManager();
        window.systemManager = this.managers.systemManager;

        // 4. 初始化检测管理器
        this.managers.detectionManager = new DetectionManager();
        window.detectionManager = this.managers.detectionManager;

        // 5. 初始化统计管理器
        this.managers.statisticsManager = new StatisticsManager();
        window.statisticsManager = this.managers.statisticsManager;

        // 6. 初始化语音管理器
        this.managers.voiceManager = new VoiceManager();
        window.voiceManager = this.managers.voiceManager;

        // 7. 初始化配置管理器
        this.managers.configManager = new ConfigManager();
        window.configManager = this.managers.configManager;
    }

    setupGlobalReferences() {
        // 设置全局app引用
        window.app = this;
        
        // 添加初始化完成日志
        window.logManager.addLogEntry('info', '系统初始化完成');
    }

    // 获取管理器
    getManager(name) {
        return this.managers[name];
    }

    // 销毁应用
    destroy() {
        // 断开WebSocket连接
        if (this.managers.socketManager) {
            this.managers.socketManager.disconnect();
        }

        // 清理其他资源
        Object.keys(this.managers).forEach(key => {
            const manager = this.managers[key];
            if (manager && typeof manager.destroy === 'function') {
                manager.destroy();
            }
        });

        console.log('🔴 应用已销毁');
    }
}

// 创建应用实例
new App(); 